// 微信h5公共方法

// 引入微信sdk
import wx from "weixin-js-sdk";

//引入api
import {
	getSignatureApi // 获取微信ticket
} from '@/api/cityParty.js';

import {
	postRechargr, // 充值
} from '@/api/order.js'

import config from '@/utils/config.js'


var wxTicketData = ''


/**
 * 获取微信信息
 */
async function getSignature() {
	const res = await getSignatureApi({
		url: config.baseURL
	})
	if (Object.keys(res.data).length < 1) {
		return
	}
	return res.data; // 微信信息

}

/**
 * 注册sdk
 */
async function setSignIn(val, config = "") {

	//获取微信信息
	if (config === "") {
		wxTicketData = await getSignature()
	} else {
		wxTicketData = config
	}

	// 注册sdk
	wx.config({
		debug: false, // 开启调试模式
		appId: wxTicketData.appId, //必填，公众号的唯一标识  
		timestamp: wxTicketData.timestamp, // 必填，生成签名的时间戳 
		nonceStr: wxTicketData.nonceStr, // 必填，生成签名的随机串 
		signature: wxTicketData.signature, //必填，签名
		jsApiList: [...val], // 必填，需要使用的JS接口列表

	});
	wx.error(err => {
		console.log('验证消息失败', err);
	})
}


/**
 * 微信的分享
 */
export async function wxShare(val) {

	if (val.link.split("#")[0] === 'http://localhost:8080/') {
		return
	}

	// 注册sdk
	await setSignIn(["updateAppMessageShareData", "updateTimelineShareData"])



	// 使用sdk
	wx.ready(() => {

		//自定义“分享给朋友”及“分享到QQ”按钮的分享内容
		wx.updateAppMessageShareData({
			title: val.title, // 分享标题
			desc: val.desc, // 分享描述
			link: val.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
			imgUrl: val.imgUrl, // 分享图标
			success: function() {
				// 设置成功
			}
		})


		//自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容
		wx.updateTimelineShareData({
			title: val.title, // 分享标题
			link: val.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
			imgUrl: val.imgUrl, // 分享图标
			success: function() {
				// 设置成功
			}
		})

	});


}



/**
 * 打开地图选择位置
 */
export async function wxChooseLocation(val, config = "") {

	// 注册sdk
	await setSignIn(["checkJsApi", "getLocation", "openLocation"], config)

	// 使用sdk
	wx.ready(() => {
		wx.checkJsApi({
			jsApiList: ["getLocation", "openLocation"],
			success: function(res) {

				//打开指定位置
				wx.openLocation({
					latitude: parseFloat(val.latitude), //纬度
					longitude: parseFloat(val.longitude), //经度
					address: val.address, // 详细说明
					name: val?.name, // 位置名
					scale: val.scale, // 地图缩放级别,整型值,范围从1~28。默认为最大
					infoUrl: '', // 在查看位置界面底部显示的超链接,可点击跳转
					success: function(success) {

					},
					fail: function(err) {

					}
				})
			}

		});
	});


}

/**
 * 获取当前位置
 */
export async function getLocationApi(val) {
	let data = null;
	// 注册sdk
	await setSignIn(["getLocation"])

	console.log('进入方法');
	// 使用sdk
	wx.ready(() => {
		console.log('进入ready');
		wx.checkJsApi({
			jsApiList: ["getLocation"],
			success: function(res) {
				console.log('可以调用不');
				wx.getLocation({
					type: 'wgs84', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
					success: function(res) {
						data = {
							latitude: res.latitude, // 纬度，浮点数，范围为90 ~ -90
							longitude: res.longitude // 经度，浮点数，范围为180 ~ -180。
						}

						console.log(res, '2kkkkkkkkk');
					},
					fail: err => {
						console.log(err, '222222');
					}
				});
			},
			fail(err0) {
				console.log('不能调用接口', err0);
			}

		});
	});


}




/**
 * 微信支付
 * val-金额
 */
var paymentType = false
export async function wxPayment(val, status = 0) {

	let payConfig = null
	let url = null
	let url2 = null

	// 如果等于0,就代表不需要跳转
	if (status === 0) {
		payConfig = val
		url = '',
		url2 = ""
	} else {
		payConfig = val.data
		url = val.url ? val.url : "",
		url2 = val.url2 ? val.url2 : ""
	}


	const params = {
		appId: payConfig.appId,
		timeStamp: payConfig.timestamp,
		nonceStr: payConfig.nonceStr,
		package: payConfig.package,
		signType: payConfig.signType,
		paySign: payConfig.paySign
	}

	if (typeof WeixinJSBridge == "undefined") {
		if (document.addEventListener) {
			document.addEventListener('WeixinJSBridgeReady', wxAppFn(params, url,url2), false)
		} else if (document.attachEvent) {
			document.attachEvent('WeixinJSBridgeReady', wxAppFn(params, url,url2))
			document.attachEvent('onWeixinJSBridgeReady', wxAppFn(params, url,url2))
		}
	} else {
		wxAppFn(params, url,url2)
	}
	
	console.log(paymentType, 'kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk');

}

/**
 *	支付第二步
 */
function wxAppFn(params, url,url2) {
	
	console.log(url,url2, 'kkkmmmbnnnnnnnnnn');
	
	function handlePay(type) {
		if (type === 'success') {
			uni.showToast({
				duration: 2000,
				icon: 'none',
				title: '支付成功'
			})

			// 如果不等于空,就要跳转到url对应地址
			if (url !== '') {
				setTimeout(()=>{
					uni.navigateTo({
						url: url
					});
				},2000)
			} else {
				location.reload()
			}
		} else if (type === 'error') {
			uni.showToast({
				duration: 2000,
				icon: 'none',
				title: '支付失败，请重新支付'
			})
			
			// 如果不等于空,就要跳转到url对应地址
			if (url2 !== '') {
				setTimeout(()=>{
					uni.navigateTo({
						url: url2
					});
				},2000)
			} else {
				location.reload()
			}
		}
	}

	try{
		WeixinJSBridge.invoke('getBrandWCPayRequest', params, function(res) {
			if ('get_brand_wcpay_request:ok' === res.err_msg) {
				handlePay('success')
				paymentType = true
				// 使用以上方式判断前端返回,微信团队郑重提示：
				// res.err_msg将在用户支付成功后返回ok，但并不保证它绝对可靠。
				// alert('get_brand_wcpay_request:ok')
			} else if (res.err_msg === 'get_brand_wcpay_request:cancel' || res.err_msg === 'get_brand_wcpay_request:fail') {
				handlePay('error')
				paymentType = false
			} else {
				paymentType = false
				handlePay('error')
			}
		})
		
	}catch(e){
		handlePay('error')
	}


}